﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BE_CruzDelSur;
using System.Data.SqlClient;
using System.Data;
using BR_CruzDelSur.Interfaces;

namespace BR_CruzDelSur
{
    public class BR_FichaMovimiento : IBR_FichaMovimiento
    {
        Conexion conn = new Conexion();
        IBR_Util EEstado = new BR_Util();

        public int f_InsertarMovimiento(string descripcion, int carga, int movimiento)
        {
            List<BE_GuiaRemision> lst = new List<BE_GuiaRemision>();
            SqlParameter[] param = new SqlParameter[3];
            param[0] = new SqlParameter("VCH_DESCRIPCION", SqlDbType.VarChar);
            param[0].Value = descripcion;
            param[0].Direction = ParameterDirection.Input;
            param[1] = new SqlParameter("INT_CODIGO_CARGA", SqlDbType.Int);
            param[1].Value = carga;
            param[1].Direction = ParameterDirection.Input;
            param[2] = new SqlParameter("INT_CODIGO_MOVIMIENTO", SqlDbType.Int);
            param[2].Value = movimiento;
            param[2].Direction = ParameterDirection.Input;

            return SqlHelper.ExecuteNonQuery(conn.CadenaConexion, System.Data.CommandType.StoredProcedure, "SP_INSERTARFICHAMOVIMIENTO", param);

        }

        public List<BE_FichaMovimiento> f_ListarMovimientoCarga(int carga)
        {
            List<BE_FichaMovimiento> lst = new List<BE_FichaMovimiento>();
            SqlParameter[] param = new SqlParameter[1];
            param[0] = new SqlParameter("INT_CODIGO_CARGA", SqlDbType.Int);
            param[0].Value = carga;
            param[0].Direction = ParameterDirection.Input;

            DataSet ds = SqlHelper.ExecuteDataSet(conn.CadenaConexion, System.Data.CommandType.StoredProcedure, "SP_LISTARMOVIMIENTOCARGA", param);

            BE_FichaMovimiento entidad;
            foreach (DataRow item in ds.Tables[0].Rows)
            {
                entidad = new BE_FichaMovimiento()
                {
                    Descripcion = item["VCH_DESCRIPCION"].ToString(),
                    Fecha = Convert.ToDateTime(item["DTM_FECHA"].ToString()).ToString("dd/MM/yyyy HH:mm"),
                    CodigoCarga = Convert.ToInt16(item["INT_CODIGO_CARGA"].ToString()),
                    LugarOrigen = item["ORIGEN"].ToString(),
                    LugarDestino = item["DESTINO"].ToString(),
                    FechaOrigen = Convert.ToDateTime(item["DTM_FECHA_ORIGEN"].ToString()).ToString("dd/MM/yyyy HH:mm"),
                    FechaDestino = Convert.ToDateTime(item["DTM_FECHA_DESTINO"].ToString()).ToString("dd/MM/yyyy HH:mm"),
                    Bus = item["VCH_MARCA"].ToString() + " " + item["VCH_MODELO"].ToString() + " " + item["VCH_PLACA"].ToString(),
                    TipoTransporte = item["TIPOTRANSPORTE"].ToString()
                };
                lst.Add(entidad);
            }

            return lst;
        }

        public int f_VerificarMovimientoCarga(int carga, string estado)
        {
            List<BE_FichaMovimiento> lst = new List<BE_FichaMovimiento>();
            SqlParameter[] param = new SqlParameter[2];
            param[0] = new SqlParameter("INT_CODIGO_CARGA", SqlDbType.Int);
            param[0].Value = carga;
            param[0].Direction = ParameterDirection.Input;
            param[1] = new SqlParameter("VCH_ESTADO", SqlDbType.VarChar);
            param[1].Value = estado;
            param[1].Direction = ParameterDirection.Input;

            DataSet ds = SqlHelper.ExecuteDataSet(conn.CadenaConexion, System.Data.CommandType.StoredProcedure, "SP_VERIFICARMOVIMIENTOCARGA", param);

            foreach (DataRow item in ds.Tables[0].Rows)
            {
                return Convert.ToInt16(item["INT_TOTAL"].ToString());
            }

            return 0;
        }
    }
}
